#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

int main()
{
    int pid, status, exit_status;

    if( (pid = fork()) < 0) {
        perror("fork failed");
        exit(1);
    }

    if(!pid) {
        // 子进程
        sleep(4);
        exit(5); // 使用非零值退出，便于主进程观察
    }

    if(wait(&status) < 0) {
        perror("wait failed");
        exit(1);
    }

    // 将status与oxff(255)与来测试低8位
    if( status & 0xFF)
        printf("Some low-roderbits not zero\n");
    else {
        exit_status = status >> 8; // 低8位在前，应先右移8位，使exit_status的信息放到后面8位
        exit_status &= 0xFF; // 按位与操作
        printf("Exit status from %d was %d\n", pid, exit_status);
    }
    exit(0);
}